//package com.cn.crmsystem.shiro;
//
//import org.apache.shiro.subject.Subject;
//import org.apache.shiro.web.filter.authc.FormAuthenticationFilter;
//
//import javax.servlet.ServletRequest;
//import javax.servlet.ServletResponse;
//import javax.servlet.http.HttpServletRequest;
//
//public class MyFormAuthenticationFilter extends FormAuthenticationFilter {
///*    @Resource
//    private UserService userService;*/
//    /**
//     * 这个方法决定了是否需要用户登录
//     */
//    @Override
//    protected boolean isAccessAllowed(ServletRequest request, ServletResponse response, Object mappedValue) {
//        Subject subject = getSubject(request, response);
//        System.out.println("MyFormAuthenticationFilter  -------------------------  " +
//                "isAccessAllowed isRemembered=" + subject.isRemembered());//  true  是通过记住的 方式进入
//        System.out.println("MyFormAuthenticationFilter  ------------------------- " +
//                " isAccessAllowed isAuthenticated=" + subject.isAuthenticated());//  true  是通过/login  进入
//        /*
//        如果isAuthenticated 为 true 代表用户手动输入用户名和密码登录
//        如果isRemembered 为 true 代表用户直接通过RemenberMe功能登录
//        按照官方说明isAuthenticated和isRememberd是互斥的，即任中一个为true，另外一个必为false
//        如果希望在用户两种情况添加额外处理，可以写在下面if else中
//         */
//        if(subject.isAuthenticated()) {
//            // do work...
//            System.out.println("------");
//        }
//        else if(subject.isRemembered()) {//没有用
//            System.out.println("消除所有权限 --  重新登录");
//            // do work...  销毁所有的session
//            ((HttpServletRequest)request).getSession().invalidate();
//            //查询
//            return   true;
//        }
//        //这个方法默认只返回 subject.isAuthenticated()   加上 subject.isRemembered() 目的是让它同时也兼容remember这种情况
//        return subject.isAuthenticated() || subject.isRemembered();//  true
//    }
//}
